package com.keitaitoys.fonteditor.gui.preview;

import javax.swing.JTextArea;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import com.keitaitoys.fonteditor.core.Manager;

public class PreviewTextArea extends JTextArea implements DocumentListener {

	//////////////////////////////////////////////////////////////////////
	// Description ///////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////
	// Consts ////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////
	// Variables /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////
	// Constructor ///////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	public PreviewTextArea() {
		
		Manager manager = Manager.getInstance();
		manager.registerPreviewTextArea(this);

		init();
	}

	//////////////////////////////////////////////////////////////////////
	// Functions /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	private void init() {
		
		setLineWrap(true);
		setWrapStyleWord(true);
		setEnabled(true);
		
		getDocument().addDocumentListener(this);
	}

	//////////////////////////////////////////////////////////////////////
	// Functions /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	public void changedUpdate(DocumentEvent e) {

		Manager manager = Manager.getInstance();
		manager.executePreviewText();
	}
	
	//////////////////////////////////////////////////////////////////////
	// Functions /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	public void insertUpdate(DocumentEvent e) {

		Manager manager = Manager.getInstance();
		manager.executePreviewText();
	}

	//////////////////////////////////////////////////////////////////////
	// Functions /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	public void removeUpdate(DocumentEvent e) {

		Manager manager = Manager.getInstance();
		manager.executePreviewText();
	}
}
